package com.gxa.common.checkTokenByNew;



import com.gxa.pojo.User;
import com.gxa.utils.JwtResult;
import com.gxa.utils.JwtUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class CheckToken {

    /**
     *检查前端HTTP协议的头文件传的token过期没，并生成新的30分钟token.
     * @param request    请求类HttpServletReques
     * @return  newToke    action:0:token过期 1：token没过期
     */
    public static newToke checkTokenByNew(HttpServletRequest request){
        //获取前端http头文件中的token
        // 通常在HTTP协议里，客户端像服务器取得某个网页的时候，必须发送一个HTTP协议的头文件
        String token = request.getHeader("Authorization");
        JwtResult result = JwtUtils.validateJwt(token);

        HttpSession session = request.getSession();
        User userSession = (User)session.getAttribute("yongHu");   // 获取用户数据对象pojo

        //获取只有用户名的实体对象
        User userByName = new User();
        userByName.setNumber(userSession.getNumber());

        long id = userSession.getId();
        String idString = Long.toString(id);

        newToke newToke = new newToke();
        newToke.setAction(0); //过期

        if(result.isSuccess()){
            //重新生成token，并增加30分钟时效
            String newToken = JwtUtils.createJwt(idString,
                    "gxa", JwtUtils.generalSubject(userByName),
                    1000*60*30);

            //自己的service方法
//            R rData = infoTeacherService.updateUser(user);


            newToke.setNewToke(newToken);
            newToke.setAction(1); //没过期

            return newToke;
        }
        return newToke;
    }
}
